package com.sky.result;

import lombok.Data;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 衷岚
 * @version 1.0
 */

@Data
public class MultiDelayMessage<T> {
    /**
     * 消息体
     * 记录订单id
     */
    private T data;
    /**
     * 记录延迟时间的集合
     * 即时间分片
     */
    private List<Integer> delayMillis;

    public MultiDelayMessage(T data, List<Integer> delayMillis) {
        this.data = data;
        this.delayMillis = delayMillis;
    }

    public static <T> MultiDelayMessage<T> of(T data, Integer ... delayMillis) {
        return new MultiDelayMessage<>(data, new ArrayList<>(List.of(delayMillis)));
    }

    /**
     * 获取并移除下一个延迟时间
     * @return 队列中的第一个延迟时间
     */
    public Integer removeNextDelay() {
        return delayMillis.remove(0);
    }

    /**
     * 判断是否有时间片剩余
     * @return true or false
     */
    public boolean hasNextDelay() {
        return !delayMillis.isEmpty();
    }
}
